inTrackManualResize = YES;
- mouse_location = [self convertPointToScreen:[self mouseLocationOutsideOfEventStream]];
+ mouse_location = convert_nspoint_to_screen (self, [self mouseLocationOutsideOfEventStream]);
mdx = initialResizeLocation.x - mouse_location.x;
mdy = initialResizeLocation.y - mouse_location.y;
}
initialResizeFrame = [self frame];
- initialResizeLocation = [self convertPointToScreen:[self mouseLocationOutsideOfEventStream]];
+ initialResizeLocation = convert_nspoint_to_screen (self, [self mouseLocationOutsideOfEventStream]);
}
-(NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
NSPoint point;
nswindow = _gdk_macos_surface_get_native (GDK_MACOS_SURFACE (surface));
- point = [nswindow convertPointFromScreen:screen_point];
+ point = convert_nspoint_from_screen (nswindow, screen_point);
*x = point.x;
*y = surface->height - point.y;
}
else
{
- *screen_point = [(GdkMacosWindow *)[nsevent window] convertPointToScreen:point];
+ *screen_point = convert_nspoint_to_screen ([nsevent window], point);
*x = point.x;
*y = surface->height - point.y;
}
};
typedef struct _GdkPoint GdkPoint;
+static inline NSPoint
+convert_nspoint_from_screen (NSWindow *window,
+ NSPoint point)
+{
+#ifdef AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER
+ return [window convertPointFromScreen:point];
+#else
+ /* Apple documentation claims that convertPointFromScreen is available
+ * on 10.12+. However, that doesn't seem to be the case when using it.
+ * Instead, we'll just use it on modern 10.15 systems and fallback to
+ * converting using rects on older systems.
+ */
+ return [window convertRectFromScreen:NSMakeRect (point.x, point.y, 0, 0)].origin;
+#endif
+}
+
+static inline NSPoint
+convert_nspoint_to_screen (NSWindow *window,
+ NSPoint point)
+{
+#ifdef AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER
+ return [window convertPointToScreen:point];
+#else
+ /* Apple documentation claims that convertPointToScreen is available
+ * on 10.12+. However, that doesn't seem to be the case when using it.
+ * Instead, we'll just use it on modern 10.15 systems and fallback to
+ * converting using rects on older systems.
+ */
+ return [window convertRectToScreen:NSMakeRect (point.x, point.y, 0, 0)].origin;
+#endif
+}
#endif /* __GDK_MACOS_UTILS_PRIVATE_H__ */